// import { BaseModel } from '../model/BaseModel';

// export interface BaseMapper<T extends BaseModel> {
// 	/**
// 	 * 插入数据。
// 	 * 该方法接收一个 T 类型的对象，将其存储到数据库中。
// 	 * 会调用 getColumnsAndValues 方法将对象的属性转换为 SQL 语句中的列和值，并构建插入语句，然后调用 executeSql 方法执行插入操作。
// 	 * @param model - 要插入的 T 类型的数据对象。
// 	 */
// 	insert(model : T) : Promise<void>;

// 	/**
// 	 * 根据主键查询数据。
// 	 * 该方法接收一个主键 id 和 T 类型的构造函数。
// 	 * 会构建一个根据主键查询的 SQL 语句，执行查询操作，若有结果则调用 mapResultToModel 方法将结果映射为 T 类型的对象，否则返回 null。
// 	 * @param id - 用于查询的主键值。
// 	 * @param model - T 类型的构造函数，用于创建查询结果的对象实例。
// 	 */
// 	selectById(id : any, model : new () => T) : Promise<T>;

// 	/**
// 	 * 查询所有数据。
// 	 * 该方法接收 T 类型的构造函数。
// 	 * 会构建一个查询所有数据的 SQL 语句，执行查询操作，并将结果调用 mapResultsToModels 方法映射为 T 类型的对象数组。
// 	 * @param model - T 类型的构造函数，用于创建查询结果的对象实例。
// 	 */
// 	selectAll(model : new () => T) : Promise<T[]>;

// 	/**
// 	 * 根据条件查询数据。
// 	 * 该方法接收一个查询条件和 T 类型的构造函数。
// 	 * 会构建一个根据条件查询的 SQL 语句，执行查询操作，并将结果调用 mapResultsToModels 方法映射为 T 类型的对象数组。
// 	 * @param condition - 查询条件，为一个字符串。
// 	 * @param model - T 类型的构造函数，用于创建查询结果的对象实例。
// 	 */
// 	selectByCondition(condition : string, model : new () => T) : Promise<T[]>;

// 	/**
// 	 * 分页查询数据。
// 	 * 该方法接收当前页数、每页大小、可选的查询条件、可选的排序条件和 T 类型的构造函数。
// 	 * 首先会执行一个 COUNT(*) 查询以获取总条数，然后根据条件、排序和分页信息构建 SQL 语句进行查询操作，将结果映射为 T 类型的对象数组。
// 	 * 最终返回一个包含当前页数、总条数和数据的 PageModel 对象。
// 	 * @param page - 当前页数。
// 	 * @param size - 每页的大小。
// 	 * @param condition - 可选的查询条件，为一个字符串。
// 	 * @param orderBy - 可选的排序条件，为一个字符串。
// 	 * @param model - T 类型的构造函数，用于创建查询结果的对象实例。
// 	 */
// 	selectByPage(page : number, size : number, condition ?: string, orderBy ?: string, model : new () => T) : Promise<PageModel>;

// 	/**
// 	 * 更新数据。
// 	 * 该方法接收一个 T 类型的对象。
// 	 * 会调用 getUpdateSet 方法将对象的属性转换为 SQL 更新语句中的 SET 部分，根据主键构建更新语句，然后调用 executeSql 方法执行更新操作。
// 	 * @param model - 要更新的 T 类型的数据对象。
// 	 */
// 	update(model : T) : Promise<void>;

// 	/**
// 	 * 根据主键删除数据。
// 	 * 该方法接收一个主键 id 和 T 类型的构造函数。
// 	 * 会构建一个根据主键删除的 SQL 语句，并调用 executeSql 方法执行删除操作。
// 	 * @param id - 用于删除的主键值。
// 	 * @param model - T 类型的构造函数，用于确定要删除数据的表。
// 	 */
// 	deleteById(id : any, model : new () => T) : Promise<void>;

// 	/**
// 	 * 根据条件删除数据。
// 	 * 该方法接收一个查询条件和 T 类型的构造函数。
// 	 * 会构建一个根据条件删除的 SQL 语句，并调用 executeSql 方法执行删除操作。
// 	 * @param condition - 用于删除的查询条件，为一个字符串。
// 	 * @param model - T 类型的构造函数，用于确定要删除数据的表。
// 	 */
// 	deleteByCondition(condition : string, model : new () => T) : Promise<void>;

// 	// 开始事务
// 	beginTransaction() : Promise<void>;

// 	// 提交事务
// 	commitTransaction() : Promise<void>;

// 	// 回滚事务
// 	rollbackTransaction() : Promise<void>;
// }

// export { BaseModel };